import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Isso é um exemplo, observe seu funcionamento e aplique o conhecimento. Não 
 * utilize esse código em uma aplicação real.
 * @author Guilherme de Lemos
 */
public class SocketServidor {
    public void executar(String porta) {
        try {
            ServerSocket socketServidor = new ServerSocket(Integer.parseInt(porta));
            System.out.println("Aguardando conexão.");

            Socket socketCliente = socketServidor.accept();
            InputStream entrada = socketCliente.getInputStream();
            BufferedReader leitor = new BufferedReader(new InputStreamReader(entrada));

            System.out.println(leitor.readLine());
            
            leitor.close();
            entrada.close();
            socketCliente.close();
            socketServidor.close();
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
        if(args.length != 1) {
            System.out.println("Forma de uso\n" +
                "java SocketServidor [PORTA]\n" +
                "Exemplo: java SocketServidor 4000");
            System.exit(0);
        }
    
        SocketServidor ss = new SocketServidor();
        ss.executar(args[0]);
    }
}
